﻿Public Class BarajaRecursos
    Inherits Baraja
    Public Enum Recurso
        Oveja
        Madera
        Ladrillo
        Roca
        Trigo
    End Enum

    Private baraja As BarajaRecursos = New BarajaRecursos()

    Public Function getInstance() As BarajaRecursos
        Return CType(baraja, BarajaRecursos)
    End Function

    Private Sub creaCarta(ByVal tipo As Recurso, ByVal n As Integer, ByVal descripcion As String)
        Dim nombre As String = tipo.ToString.ToLower
        Dim nueva As Carta = New CartaRecurso(nombre, tipo, descripcion)
        For i As Integer = 0 To n - 1
            mazo.Add(nueva)
        Next i
        idACarta.Add(nueva.pID, nueva)
        'aqui se agrega la imagen asociada a ese elemento'
    End Sub

    Private Sub New()
        'aqui llamaria al constructor de imagen'
        creaCarta(Recurso.Ladrillo, 19, "Usado para carreteras y poblados")
        creaCarta(Recurso.Madera, 19, "Usado para carreteras y poblados")
        creaCarta(Recurso.Oveja, 19, "Necesaria para cartas de desarrollo y poblados")
        creaCarta(Recurso.Roca, 19, "Necesaria para cartas de desarrollo y ciudades")
        creaCarta(Recurso.Trigo, 19, "Usado para cartas de desarrollo, poblados y ciudades")
    End Sub

    Public Function cartaParaTipo(ByVal r As Recurso) As Carta
        Return getInstance.cartaParaId(r.ToString.ToLower.Substring(0, 1))
    End Function

    Public Function tipoParaCarta(ByVal c As Carta) As Recurso
        Return CType(c, CartaRecurso).pRecurso
    End Function

    Private Class CartaRecurso
        Inherits Carta
        Private r As Recurso
        Public Sub New(ByVal nombre As String, ByVal r As Recurso, ByVal descripcion As String)
            MyBase.new(nombre.Substring(0, 1), r.ToString, descripcion)
            Me.r = r
        End Sub
        Public Property pRecurso() As Recurso
            Get
                Return r
            End Get
            Set(ByVal value As Recurso)
                r = value
            End Set
        End Property
    End Class
End Class
